/**
 *
 * @description: Iterator
 * @author: junyong.hong
 * @createTime: 2018/3/29
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
{
    let arr = ['hello','world'];
    let map = arr[Symbol.iterator]();
    // {value: "hello", done: false}
    console.log(map.next());
    // {value: "world", done: false}
    console.log(map.next());
    // {value: undefined, done: true}  true代表没有下一步
    console.log(map.next());
}

{
    // 自定义iterator接口
    // obj数据是我们自己填充
    let obj = {
        start:[1,3,2],
        end:[7,9,8],
        // Symbol.iterator变量名
        [Symbol.iterator](){
            let self = this;
            // 记录当前遍历索引
            let index = 0;
            // start和end合并成一个数组
            let arr = self.start.concat(self.end);
            // 记录数组的长度
            let len = arr.length;
            return {
                next(){
                    if(index < len){
                        return {
                            value:arr[index++],
                            done:false
                        }
                    } else {
                        return {
                            value:arr[index++],
                            done:true
                        }
                    }
                }
            }
        }
    }

    for(let key of obj){
        console.log(key);
    }
}


{
    // 对数组进行遍历
    let arr = ['hello','world'];
    for(let value of arr){
        // hello
        // world
        console.log('value',value);
    }
}














